package dao.LibraryDao;

import dao.BaseDao;
import common.model.Entity.libraryEntity.Borrow;
import common.model.Entity.libraryEntity.enums.BorrowStatus;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 借阅记录数据访问接口。
 *
 * <p>提供对 {@link Borrow} 实体的持久化及与业务相关的查询能力。</p>
 */
public interface BorrowDao extends BaseDao<Borrow, Long> {
    /**
     * 查询指定用户所有处于“活跃”状态的借阅记录。
     *
     * <p>活跃状态通常指 {@link BorrowStatus#BORROWED} 与 {@link BorrowStatus#OVERDUE}。</p>
     *
     * @param userId 用户主键
     * @return 活跃借阅记录列表，若不存在则返回空列表
     */
    List<Borrow> findActiveBorrowByUser(Long userId);

    /**
     * 根据用户 ID 与借阅状态查询记录。
     *
     * @param userId 用户主键
     * @param status 借阅状态枚举
     * @return 符合条件的借阅记录列表，若不存在则返回空列表
     */
    List<Borrow> findByUserIdAndStatus(Long userId, BorrowStatus status);
}